package simco.framework.gui.utils;

import java.util.Locale;
import java.util.ResourceBundle;

/**
 * Trida nacitajici a sprodredkovavajici soubory s lokalizovanymi
 * texty. Podle uzivatelskeho nastaveni nacita prislusny 
 * soubor (obsahujici texty v pozadovanem jazyce)  
 * 
 * @author Matej Prokop, mythge@students.zcu.cz
 */
public class LocalizationUtil 
{
	/**
	 * Cesta k adresari se lokalizacnimi soubory
	 */
	public static final String LOCALIZATION_PATH = "resources/";
	
	/**
	 * Nazev souboru obsahujici obecne texty, tj. texty, ktere se 
	 * pri nepoji k nejake konrektni tride
	 * 
	 */
	public static final String GENERAL_RESOURCE_NAME = "General";
	
	/**
	 * Reference na objekt s nactenou obecnou lokalizaci
	 */
	private static ResourceBundle generalBundle; 
	
	/**
	 * Aktualne nastavene prostredi v konfiguraci
	 */
	private static Locale currentLocale; 
	
	/**
	 * Promenna indikujici uskutecneni inicializace
	 */
	private static boolean inicialized = false;
	
	static 
	{
		currentLocale = new Locale(Configuration.getLocality());
	}

	/**
	 * Vraci objekt s nactenou lokalizaci.
	 * 
	 * @param resourceName jmeno souboru s lokalizaci
	 * @return objekt s nactenou lokalizaci
	 */
	public static ResourceBundle getResource(String resourceName)
	{	
		ensureIsInited();
		return ResourceBundle.getBundle( LOCALIZATION_PATH + resourceName,
				currentLocale);		
	}
	
	/**
	 * Vraci objekt s nactenou obecnou lokalizaci
	 * @return objekt s obecnou lokalizaci
	 */
	public static ResourceBundle getGeneralResource()
	{
		ensureIsInited();
		
		if(generalBundle == null)
		{
			generalBundle = ResourceBundle.getBundle( LOCALIZATION_PATH +
					GENERAL_RESOURCE_NAME, currentLocale);
		}
		
		return generalBundle;
	}
	
	/**
	 * Overuje jestli jiz probehla inicializace 
	 */
	private static void ensureIsInited()
	{
		if(!inicialized)
		{
			currentLocale = new Locale(Configuration.getLocality());
			inicialized = true;
		}
	}
}
